//package com.lt.test.consumer.controller;
//
//
//import com.alibaba.dubbo.config.annotation.Reference;
//import com.lt.test.api.QstiairesServicr;
//import com.lt.test.common.exception.CustomException;
//import com.lt.test.common.util.ExcelUtil;
//import com.lt.test.common.util.WebUtils;
//import com.lt.test.entity.DTO.ResponseDTO;
//import com.lt.test.entity.QueryModel.MapQueryModel;
//import net.sf.json.JSONArray;
//import net.sf.json.JsonConfig;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.OutputStream;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author lt
// * @date 2018/11/17 14:35
// */
//
//@Controller
//@RequestMapping("/api/qstiaires")
//public class QstiairesController {
//    private static final Logger logger = LoggerFactory.getLogger(QstiairesController.class);
//
//    @Reference(version = "1.0.0")
//    private QstiairesServicr qstiairesServicr;
//
//    /**
//     * 页面跳转
//     * @return
//     */
//    @RequestMapping("/index")
//    public String index(){
//        return "content/qstiaires/index";
//    }
//
//    /**
//     * 页面跳转
//     * @return
//     */
//    @RequestMapping("/indStock")
//    public String indStock(){
//        return "content/qstiaires/indStock";
//    }
//
//
//    /**
//     * 获取问卷数据
//     * @param request
//     * @return
//     */
//    @RequestMapping("/getQstiaires")
//    public @ResponseBody
//    ResponseDTO
//    getQstiaires(HttpServletRequest request){
//        Map<String, Object> result = WebUtils.getAllParamMap(request);
//        ResponseDTO responseDTO = new ResponseDTO();
//        System.out.println("=============> 开始获取问卷数据数据");
//        try {
//            List<Map<String, Object>> data = qstiairesServicr.getQstiaires(result);
//            responseDTO.setCode("000");
//            responseDTO.setMessage("获取问卷数据数据成功");
//            responseDTO.setSuccess(true);
//            responseDTO.setData(data);
//        } catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setSuccess(false);
//            responseDTO.setMessage("获取问卷数据失败");
//        }
//        return responseDTO;
//    }
//
//    /**
//     * 获取问卷数据库存
//     * @param request
//     * @return
//     */
//    @RequestMapping("/getQstiairesStock")
//    public @ResponseBody
//    ResponseDTO
//    getQstiairesStock(HttpServletRequest request){
//        Map<String, Object> result = WebUtils.getAllParamMap(request);
//        ResponseDTO responseDTO = new ResponseDTO();
//        System.out.println("=============> 开始获取问卷数据库存数据");
//        try {
//            List<Map<String, Object>> data = qstiairesServicr.getQstiairesStock();
//            responseDTO.setCode("000");
//            responseDTO.setMessage("获取问卷数据数据成功");
//            responseDTO.setSuccess(true);
//            responseDTO.setData(data);
//        } catch (Exception e) {
//            e.printStackTrace();
//            responseDTO.setCode("500");
//            responseDTO.setSuccess(false);
//            responseDTO.setMessage("获取问卷数据失败");
//        }
//        return responseDTO;
//    }
//
//    /**
//     * 统计数据导出到excel
//     *
//     * @param request
//     * @param response
//     * @throws Exception
//     */
//    @RequestMapping("/exportExcels")
//    public void exportExcels(HttpServletRequest request, HttpServletResponse response, MapQueryModel params) throws Exception {
//        logger.info("开始生成excel表格");
//        String exportExcelData = request.getParameter("exportExcelData");
//        String channelName = request.getParameter("inputChannelName");
//        String slsmanName = request.getParameter("inputSlsmanName");
//        String tableType = request.getParameter("tableType");
//
//        if (tableType == null) {
//            throw new CustomException("表格数据太大");
//        }
//        logger.info("exportExcelData is "+exportExcelData);
//        JSONArray jsonList = JSONArray.fromObject(exportExcelData);
//        List<Map<String, Object>> ShipmentOrderList = JSONArray.toList(jsonList, new HashMap<>(), new JsonConfig());
//        logger.info("json转List完毕");
//        Map<String, Object> map = new HashMap<>();
//        logger.info("tableType is : " + tableType);
//
//        String[] Keys = new String[0];
//        String[] columnNames = new String[0];
//
//        String fileName = "";
//
//        //获取导出数据
//        Integer page = 1;
//        Integer pageSize = 6000;
//
//        //根据导出类型获取导出数据
//        switch (tableType) {
//
//            case "qstiairesStock": //商品库存
//                ShipmentOrderList.clear();
//                map.put("sheetName", "调查汇总");
//                Keys = new String[]{"barCode", "topicName","stock", "zsStock", "scStock", "pxStock", "lzStock", "enquiry", "zsEnquiry", "scEnquiry", "pxEnquiry", "lzEnquiry"};
//                columnNames = new String[]{"商品编砪", "商品名称", "全市", "钟山", "水城", "盘县", "六枝", "全市", "钟山", "水城", "盘县", "六枝",};
//                fileName = "商品库存统计";
//
//                while (true) {
//                    params.getStringMap().put("page", page.toString());
//                    List<Map<String, Object>> resultData = qstiairesServicr.getQstiairesStock();
//                    ShipmentOrderList.addAll(resultData);
//                    if (resultData == null || resultData.size() < pageSize) {
//                        break;
//                    }
//                    page++;
//                }
//                break;
//
//            case "qstiaires": //商品库存
//                ShipmentOrderList.clear();
//                map.put("sheetName", "调查数据");
//                Keys = new String[]{"slsmanName", "custCode","custName", "custOrderLevel", "fuStock",
//                        "y280", "y281",
//                        "y10", "y11",
//                        "y20", "y21",
//                        "y30", "y31",
//                        "y40", "y41",
//                        "y50","y51",
//                        "y60", "y61",
//                        "y70", "y71",
//                        "y80", "y81",
//                        "y90", "y91",
//                        "y100", "y101",
//                        "y110", "y111",
//                        "y120", "y121",
//                        "y130", "y131",
//                        "y140","y141",
//                        "y150", "y151",
//                        "y160", "y161",
//                        "y170", "y171",
//                        "y180", "y181",
//                        "y190", "y191",
//                        "y200", "y201",
//                        "y210", "y211",
//                        "y220", "y221",
//                        "y230","y231",
//                        "y240", "y241",
//                        "y250", "y251",
//                        "y260", "y261",
//                        "y270", "y271"};
//                columnNames = new String[]{"客户经理", "客户编号", "客户名称", "客户档位", "客户总库存量", "主销及紧俏规格库存量小计", "主销及紧俏规格协商量小计",
//                        "白沙(和天下)库存量", "白沙(和天下)协商量",
//                        "云烟(软大重九)库存量", "云烟(软大重九)协商量",
//                        "中华(软)库存量", "中华(软)协商量",
//                        "贵烟(福)库存量", "贵烟(福)协商量",
//                        "中华(硬)库存量", "中华(硬)协商量",
//                        "贵烟(硬高遵)库存量", "贵烟(硬高遵)协商量",
//                        "贵烟(跨越)库存量", "贵烟(跨越)协商量",
//                        "芙蓉王(硬)库存量", "芙蓉王(硬)协商量",
//                        "云烟(软珍品)库存量", "云烟(软珍品)协商量",
//                        "玉溪(软)库存量", "玉溪(软)协商量",
//                        "贵烟(萃)库存量", "贵烟(萃)协商量",
//                        "贵烟(喜)库存量", "贵烟(喜)协商量",
//                        "云烟(硬云龙)库存量", "云烟(硬云龙)协商量",
//                        "白沙(硬精品三代)库存量", "白沙(硬精品三代)协商量",
//                        "利群(新版)库存量", "利群(新版)协商量",
//                        "贵烟(硬黄精品)库存量", "贵烟(硬黄精品)协商量",
//                        "云烟(紫)库存量", "云烟(紫)协商量",
//                        "贵烟(金百合)库存量", "贵烟(金百合)协商量",
//                        "红塔山(硬经典100)库存量", "红塔山(硬经典100)协商量",
//                        "黄果树(佳遵)库存量", "黄果树(佳遵)协商量",
//                        "红塔山(硬经典)库存量", "红塔山(硬经典)协商量",
//                        "黄果树(蓝佳品)库存量", "黄果树(蓝佳品)协商量",
//                        "黄果树(长征红星照耀)库存量", "黄果树(长征红星照耀)协商量",
//                        "红金龙(硬红龙)库存量", "红金龙(硬红龙)协商量",
//                        "红旗渠(雪茄)库存量", "红旗渠(雪茄)协商量",
//                        "遵义(软)库存量", "遵义(软)协商量",
//                        "贵烟(国酒香 30)库存量", "贵烟(国酒香 30)协商量",};
//                fileName = "商品库存统计";
//
//                while (true) {
//                    params.getStringMap().put("page", page.toString());
//                    params.getStringMap().put("channelName", channelName.toString());
//                    params.getStringMap().put("slsmanName", slsmanName.toString());
//                    List<Map<String, Object>> resultData = qstiairesServicr.getQstiaires(params.getObjectMap());
//                    List<Map<String, Object>> result = new ArrayList<>();
//                    for(int i = 0; i < resultData.size(); i++){
//                        Map<String, Object> resultMap = new HashMap();
//                        Map qstiairesMap = resultData.get(i);
//                        System.out.println("qstiairesMap: "+qstiairesMap);
//                        resultMap.put("slsmanName", qstiairesMap.get("slsmanName") == null ? "" : qstiairesMap.get("slsmanName").toString());
//                        resultMap.put("custCode", qstiairesMap.get("custCode") == null ? "" : qstiairesMap.get("custCode").toString());
//                        resultMap.put("custName", qstiairesMap.get("custName") == null ? "" : qstiairesMap.get("custName").toString());
//                        resultMap.put("custOrderLevel", qstiairesMap.get("custOrderLevel") == null ? "" : qstiairesMap.get("custOrderLevel").toString());
//                        resultMap.put("fuStock", qstiairesMap.get("fuStock") == null ? "" : qstiairesMap.get("fuStock").toString());
//
//                        resultMap.put("y280", qstiairesMap.get("y28").toString().split(",")[0]);
//                        resultMap.put("y281", qstiairesMap.get("y28").toString().split(",")[1]);
//
//                        resultMap.put("y10", qstiairesMap.get("y1").toString().split(",")[0]);
//                        resultMap.put("y11", qstiairesMap.get("y1").toString().split(",")[1]);
//
//                        resultMap.put("y20", qstiairesMap.get("y2").toString().split(",")[0]);
//                        resultMap.put("y21", qstiairesMap.get("y2").toString().split(",")[1]);
//
//                        resultMap.put("y30", qstiairesMap.get("y3").toString().split(",")[0]);
//                        resultMap.put("y31", qstiairesMap.get("y3").toString().split(",")[1]);
//
//                        resultMap.put("y40", qstiairesMap.get("y4").toString().split(",")[0]);
//                        resultMap.put("y41", qstiairesMap.get("y4").toString().split(",")[1]);
//
//                        resultMap.put("y50", qstiairesMap.get("y5").toString().split(",")[0]);
//                        resultMap.put("y51", qstiairesMap.get("y5").toString().split(",")[1]);
//
//                        resultMap.put("y60", qstiairesMap.get("y6").toString().split(",")[0]);
//                        resultMap.put("y61", qstiairesMap.get("y6").toString().split(",")[1]);
//
//                        resultMap.put("y70", qstiairesMap.get("y7").toString().split(",")[0]);
//                        resultMap.put("y71", qstiairesMap.get("y7").toString().split(",")[1]);
//
//                        resultMap.put("y80", qstiairesMap.get("y8").toString().split(",")[0]);
//                        resultMap.put("y81", qstiairesMap.get("y8").toString().split(",")[1]);
//
//                        resultMap.put("y90", qstiairesMap.get("y9").toString().split(",")[0]);
//                        resultMap.put("y91", qstiairesMap.get("y9").toString().split(",")[1]);
//
//                        resultMap.put("y100", qstiairesMap.get("y10").toString().split(",")[0]);
//                        resultMap.put("y101", qstiairesMap.get("y10").toString().split(",")[1]);
//
//                        resultMap.put("y110", qstiairesMap.get("y11").toString().split(",")[0]);
//                        resultMap.put("y111", qstiairesMap.get("y11").toString().split(",")[1]);
//
//                        resultMap.put("y120", qstiairesMap.get("y12").toString().split(",")[0]);
//                        resultMap.put("y121", qstiairesMap.get("y12").toString().split(",")[1]);
//
//                        resultMap.put("y130", qstiairesMap.get("y13").toString().split(",")[0]);
//                        resultMap.put("y131", qstiairesMap.get("y13").toString().split(",")[1]);
//
//                        resultMap.put("y140", qstiairesMap.get("y14").toString().split(",")[0]);
//                        resultMap.put("y141", qstiairesMap.get("y14").toString().split(",")[1]);
//
//                        resultMap.put("y150", qstiairesMap.get("y15").toString().split(",")[0]);
//                        resultMap.put("y151", qstiairesMap.get("y15").toString().split(",")[1]);
//
//                        resultMap.put("y160", qstiairesMap.get("y16").toString().split(",")[0]);
//                        resultMap.put("y161", qstiairesMap.get("y16").toString().split(",")[1]);
//
//                        resultMap.put("y170", qstiairesMap.get("y17").toString().split(",")[0]);
//                        resultMap.put("y171", qstiairesMap.get("y17").toString().split(",")[1]);
//
//                        resultMap.put("y180", qstiairesMap.get("y18").toString().split(",")[0]);
//                        resultMap.put("y181", qstiairesMap.get("y18").toString().split(",")[1]);
//
//                        resultMap.put("y190", qstiairesMap.get("y19").toString().split(",")[0]);
//                        resultMap.put("y191", qstiairesMap.get("y19").toString().split(",")[1]);
//
//                        resultMap.put("y200", qstiairesMap.get("y20").toString().split(",")[0]);
//                        resultMap.put("y201", qstiairesMap.get("y20").toString().split(",")[1]);
//
//                        resultMap.put("y210", qstiairesMap.get("y21").toString().split(",")[0]);
//                        resultMap.put("y211", qstiairesMap.get("y21").toString().split(",")[1]);
//
//                        resultMap.put("y220", qstiairesMap.get("y22").toString().split(",")[0]);
//                        resultMap.put("y221", qstiairesMap.get("y22").toString().split(",")[1]);
//
//                        resultMap.put("y230", qstiairesMap.get("y23").toString().split(",")[0]);
//                        resultMap.put("y231", qstiairesMap.get("y23").toString().split(",")[1]);
//
//                        resultMap.put("y240", qstiairesMap.get("y24").toString().split(",")[0]);
//                        resultMap.put("y241", qstiairesMap.get("y24").toString().split(",")[1]);
//
//                        resultMap.put("y250", qstiairesMap.get("y25").toString().split(",")[0]);
//                        resultMap.put("y251", qstiairesMap.get("y25").toString().split(",")[1]);
//
//                        resultMap.put("y260", qstiairesMap.get("y26").toString().split(",")[0]);
//                        resultMap.put("y261", qstiairesMap.get("y26").toString().split(",")[1]);
//
//                        resultMap.put("y270", qstiairesMap.get("y27").toString().split(",")[0]);
//                        resultMap.put("y271", qstiairesMap.get("y27").toString().split(",")[1]);
//                        result.add(resultMap);
//                    }
//
//
//                    ShipmentOrderList.addAll(result);
//                    if (resultData == null || resultData.size() < pageSize) {
//                        break;
//                    }
//                    page++;
//                }
//                break;
//        }
//        logger.info("添加sheetName的Map");
//        ShipmentOrderList.add(0, map);
//        logger.info("开始执行ExcelUtil.createHSSFWorkbook方法");
//        HSSFWorkbook wb;
//        try {
//            wb = ExcelUtil.createHSSFWorkbook2(ShipmentOrderList, Keys, columnNames);
//        }catch (IllegalArgumentException e) {
//            e.printStackTrace();
//            throw new CustomException("数据实在太大，建议分多次导出");
//        }
//
//        logger.info("执行ExcelUtil.createHSSFWorkbook方法完毕");
//        OutputStream out = response.getOutputStream();
//        response.reset();
//        response.setHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
//        response.setContentType("application/msexcel;charset=UTF-8");
//        logger.info("设置响应信息完成");
//        //输出excel文件
//        wb.write(out);
//        out.close();
//        logger.info("结束生成excel表格");
//    }
//}
